﻿#Region "TableBDD_ACCESS"
''' <summary>
''' 
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class TableBDD_ACCESS
    Inherits tableBDD

#Region "Constructeur"

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New(ByVal nomTraitement As String, ByVal nomFichier As Cla_NomFichier)

        MyBase.New(nomTraitement, nomFichier, typeBase.ACCESS)

        Me.Connection = ACCESS_initOleDbConnection(Me.FichierBDD)

    End Sub

#End Region

#Region "Traitement des évènements à générer lors d'un changement de nom de la table"
    Protected Sub onNomTableDansBDDChanged(ByVal sender As Object, ByVal e As PTIC_Util.PropertyChangeEventArgs(Of String))
        MAJMetaDonnees()
        MAJListesChampsFromMetaDonnees()
        MAJStats()
    End Sub
#End Region

#Region "Méthodes de classe protégées"

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Protected Overrides Sub MAJMetaDonnees()
        'Crétion d'une table qui contient :
        '   - une ligne par champs de la table d'encours
        '   - les colonnes : nom du champs / type du champs / longueur du champs / format du champs

        Dim da1 As OleDb.OleDbDataAdapter, result As DataTable
        Dim schemaTbleFromFillSchema As New DataTable()

        Connection.Open()

        'Récupération des caractéristiques des colonnes à l'aide de la méthode fillSchema
        da1 = New OleDb.OleDbDataAdapter("SELECT * FROM " & Me.NomTableDansBDD, Connection)
        da1.FillSchema(schemaTbleFromFillSchema, SchemaType.Source)

        Connection.Close()

        'A partir des deux tables récupérées ci-dessus, alimentation du schema final

        result = New DataTable("MetaDonneesTbleEnc")
        result.Columns.Add("COLUMN_NAME", GetType(System.String))
        result.Columns.Add("DATA_TYPE_FULLNAME", GetType(System.String))
        result.Columns.Add("COLUMN_LENGTH", GetType(System.Int32))
        result.Columns.Add("FORMAT_NAME", GetType(System.String))

        For Each c As DataColumn In schemaTbleFromFillSchema.Columns
            result.Rows.Add(c.ColumnName, c.DataType.FullName, c.MaxLength, "")
        Next

        TableMetaDonnees = result

    End Sub

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Protected Overrides Sub MAJTablesDispoBDD()
        Dim _slNomTablesDispoBDD As New List(Of String)
        Dim schemaTable As DataTable
        Connection.Open()
        schemaTable = Connection.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
        Connection.Close()
        For i As Integer = 0 To schemaTable.Rows.Count - 1
            If schemaTable.Rows(i)(3).ToString() = "TABLE" Then
                _slNomTablesDispoBDD.Add(schemaTable.Rows(i)(2).ToString())
            End If
        Next i
    End Sub

#End Region

End Class
#End Region
